package com.skycan.plc.adapter.netty.handler;

import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;

/**
 * 设备消息解码器
 */
public class DeviceMessageDecoder extends MessageToMessageDecoder<byte[]> {
    private static final Logger logger = LoggerFactory.getLogger(DeviceMessageDecoder.class);

    @Override
    protected void decode(ChannelHandlerContext ctx, byte[] msg, List<Object> out) {
        // 记录收到的原始数据
        logger.debug("收到设备消息，长度: {}, 来源: {}", msg.length, ctx.channel().remoteAddress());

        // 默认将解码结果直接传递给下一个处理器
        // 实际应用可以在这里解析不同设备的协议格式
        out.add(msg);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        logger.error("消息解码异常: {}", cause.getMessage());
        ctx.close();
    }
}